package com.xywy.wjk;

import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.TextPaint;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.umeng.analytics.MobclickAgent;
import com.xywy.R;
import com.xywy.common.BaseFragment;
import com.xywy.common.FragmentMainActivity;
import com.xywy.common.app.MainApplication;
import com.xywy.common.constants.ConstantValue;
import com.xywy.common.constants.ResultCode;
import com.xywy.common.greendao.BaseDao;
import com.xywy.wjk.bean.BloodPressureData;
import com.xywy.wjk.bean.WeightData;
import com.xywy.wjk.dao.BloodPressureDataDao;
import com.xywy.wjk.dao.BloodPressureDataDao.Properties;
import com.xywy.wjk.dao.WeightDataDao;
import com.xywy.wjk.fragment.BloodPressureFragment;
import com.xywy.wjk.fragment.WeightFragment;
import com.xywy.wjk.observer.DevicesObserver;
import com.xywy.wjk.observer.ObserverConstants;
import com.xywy.wjk.util.DeviceState;
import com.xywy.wjk.widget.TipDialog;
import com.xywy.wjk.widget.TipDialog.CancleListener;
import com.xywy.wjk.widget.TipDialog.ConfirmListener;
import com.xywy.wjk.widget.TipDialog.OkayListener;
import de.greenrobot.dao.query.QueryBuilder;

/**
 * @ClassName: WjkFragment
 * @Description: 云健康测量界面
 * @author ZhiluCui
 * @date 2014年10月23日 下午6:03:09
 * @version:1.0
 */
public class WjkFragment extends BaseFragment implements OnClickListener {

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public int getID() {
		// TODO Auto-generated method stub
		return 0;
	}
//	/* 蓝牙设备需要的变量 */
//	public static final String EXTRAS_DEVICE_ADDRESS = "DEVICE_ADDRESS";
//	public static final int FRAGMENT_WEIGHT_SCLAE = 0; // 体重秤
//	public static final int FRAGMENT_BLOOD_PRESURE = 1; // 血压计
//	public static final String CURRENT_FRAGMENT = "current_fragment"; // sp key；
//	public static final int WEIGHT_SCALE_REQUEST_CODE = 1030; // 体重
//	public static final int BLOOD_PRESURE_REQUEST_CODE = 1040; // 血压
//	public static final int THERMOMETER_REQUEST_CODE = 1050; // 体温
//	public static final int BLOOD_SUGAR_REQUEST_CODE = 1060; // 血糖
//	protected static final String TAG = "WjkFragment";
//
//	public int FRAGMENT_CURRENT; // 当前的设备fragment
	public static int HEIGHT = 250;
//	private WeightFragment weitFragment;
//	private BloodPressureFragment blFragment;
//	private Fragment curFragment;
//
//	// 新加的 里面的fragment
//	private FragmentManager fragmentManager;
//	private FragmentMainActivity mactivity; // 主activity的引用；
//
//	private SharedPreferences sp;
//	private TipDialog dialog;
//
//	private DevicesObserver observer; // 切换观察者
//
//	private View rootView;
//	private LinearLayout ll_not_connectted_prompot;
//	private TextView ivAdd;
//	private ImageButton btnFirst; // 第一个按钮
//	private LinearLayout llFirst; // 第一个按钮
//	private ImageButton btn_yjk_second; // 第二个按钮
//	private ImageButton btn_yjk_third; // 第三个按钮
//	private TextView tv_last_connected_device_name;
//	private TextView tv_last_connected_device_unit;
//	private ImageView iv_last_connected_device_view;
//	private TextView tv_last_connected_device_value;
//
//	private BloodPressureDataDao bloodPressureDataDao;
//	private WeightDataDao weightDataDao;
//
//	boolean isBind;// 是否已经绑定过设备；绑定过，不显示Dialog。没绑定过就提示
//	public static final int REQUEST_DIALOG = 0x1111; //连接设备
//
//	/**
//	 * Fragmengt唯一标识
//	 * 
//	 * @return
//	 */
//	@Override
//	public int getID() {
//		return ConstantValue.FG_WJK;
//	}
//
//	@Override
//	public void onAttach(Activity activity) {
//		super.onAttach(activity);
//		mactivity = (FragmentMainActivity) activity;
//	}
//
//	@Override
//	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//		rootView = inflater.inflate(R.layout.fragment_wjk, null);
//		// TestingDialog.showFloowDialog(getActivity());
//		MobclickAgent.setDebugMode(true);
//		this.init();
//		this.initView();
//		this.initDAO();
//		this.setListener();
//		return rootView;
//	}
//
//	@Override
//	public void onResume() {
//		super.onResume();
//		/* 底部三个图片的处理 ， 曾经出现底部没有切换的情况 */
//		getActivity().runOnUiThread(new Runnable() {
//			@Override
//			public void run() {
//				showBottomView();
//			}
//		});
//
//	}
//
//	/* 初始化DAO 需要获取最后一次的数据，并且展示在底部按钮上 */
//	private void initDAO() {
//		BaseDao baseDao = BaseDao.getInstance(getActivity());
//		bloodPressureDataDao = baseDao.getBloodPressureDataDao();
//		weightDataDao = baseDao.getWeightDataDao();
//	}
//
//	/**
//	 * 初始化一些配置
//	 */
//	private void init() {
//		registerTabObserver();
//		fragmentManager = getChildFragmentManager();
//		sp = mactivity.getSharedPreferences("config", Context.MODE_PRIVATE);
//		int temp = sp.getInt(CURRENT_FRAGMENT, FRAGMENT_WEIGHT_SCLAE);
//		/* 以下操作：展示上次连接的设备 */
//		showLastDeviceFragment(temp);
//		/* 一下功能为，判断是否已经连接过设备，如果已经连接过，那么不会提示Dialog。如果没有连接过，就会提示。 */
//		initDialog();
//
//	}
//
//	/**
//	 * 展示底部第一个按钮的样式
//	 * 
//	 * @param temp
//	 *            当前的fragment
//	 */
//	private void showBottomView() {
//		// 大块是体重
//		if (curFragment == weitFragment) {
//			if (DeviceState.getDeviceState(getActivity(), DeviceState.DEVICE_BLOOD_PAUSERE)) {
//				tv_last_connected_device_name.setText("血压");
//				tv_last_connected_device_unit.setText("mmHg");
//				iv_last_connected_device_view.setImageResource(R.drawable.bp_value);
//				List<BloodPressureData> bp_lastdata = getLastData();
//				if (bp_lastdata != null && bp_lastdata.size() > 0) {
//
//					DecimalFormat df = new DecimalFormat("0");
//
//					tv_last_connected_device_value.setText(df.format(bp_lastdata.get(0).getHighPressure()) + "~" + df.format(bp_lastdata.get(0).getLowPressure()));
//				} else {
//					tv_last_connected_device_value.setText("0~0");
//				}
//				TextView tv = (TextView) rootView.findViewById(R.id.tv_last_connected_device_value);
//				TextPaint tp = tv.getPaint();
//				tp.setFakeBoldText(true);
//
//				llFirst.setOnClickListener(new OnClickListener() {
//
//					@Override
//					public void onClick(View arg0) {
//						Intent intent = new Intent(getActivity(), BloodPressureDetailActivity.class);
//						startActivity(intent);
//					}
//				});
//			} else {
//				llFirst.setVisibility(View.GONE);
//				btnFirst.setVisibility(View.VISIBLE);
//				btnFirst.setOnClickListener(new OnClickListener() {
//
//					@Override
//					public void onClick(View arg0) {
//						dialog = new TipDialog(getActivity(), TipDialog.VIEW_DIALOG);
//						dialog.show();
//						dialog.setTitleAndContent("血压仪", "该设备尚未开启，立即前往添加？");
//						dialog.setCancleCallback(new CancleListener() {
//							@Override
//							public void cancle() {
//								dialog.dismiss();
//
//							}
//						});
//						dialog.setConfirmCallback(new ConfirmListener() {
//
//							@Override
//							public void confirm() {
//								Intent weightIntent = new Intent(getActivity(), SelectBrandActivity.class);
//								weightIntent.putExtra("deviceType", "血压仪");
//								startActivityForResult(weightIntent, BLOOD_PRESURE_REQUEST_CODE);
//							}
//						});
//					}
//				});
//			}
//
//		} else if (curFragment == blFragment) {
//			// 大块是血压
//			if (DeviceState.getDeviceState(getActivity(), DeviceState.DEVICE_WEIGHT_SCALE)) {
//				btnFirst.setVisibility(View.GONE);
//				// btnFirst.setImageResource(R.drawable.weight_connected);
//				llFirst.setVisibility(View.VISIBLE);
//				tv_last_connected_device_name.setText("体重");
//				tv_last_connected_device_unit.setText("kg");
//				iv_last_connected_device_view.setImageResource(R.drawable.weight_value);
//				WeightData weight = getLastWeightData();
//				if (weight != null) {
//
//					tv_last_connected_device_value.setText(weight.getWeight() + "");
//
//				} else {
//					tv_last_connected_device_value.setText("00.0");
//				}
//				TextPaint tp = tv_last_connected_device_value.getPaint();
//				tp.setFakeBoldText(true);
//
//				llFirst.setOnClickListener(new OnClickListener() {
//
//					@Override
//					public void onClick(View arg0) {
//						Intent intent = new Intent(getActivity(), WjkDetailActivity.class);
//						startActivity(intent);
//					}
//				});
//			} else {
//				// btnFirst.setVisibility(View.VISIBLE);
//				llFirst.setVisibility(View.GONE);
//				btnFirst.setVisibility(View.VISIBLE);
//				// btnFirst.setImageResource(R.drawable.weight_not_open);
//				btnFirst.setBackground(getResources().getDrawable(R.drawable.weight_not_open));
//				btnFirst.setOnClickListener(new OnClickListener() {
//
//					@Override
//					public void onClick(View arg0) {
//						dialog.show();
//						dialog.setTitleAndContent("体质称", "该设备尚未开启，立即前往添加？");
//						dialog.setConfirmCallback(new ConfirmListener() {
//							@Override
//							public void confirm() {
//								Intent weightIntent = new Intent(getActivity(), SelectBrandActivity.class);
//								weightIntent.putExtra("deviceType", "体重秤");
//								startActivityForResult(weightIntent, BLOOD_PRESURE_REQUEST_CODE);
//							}
//						});
//					}
//				});
//			}
//		}
//
//	}
//
//	/**
//	 * 为当前Dialog做事件处理，并且判断是否第一次使用。
//	 */
//	private void initDialog() {
//		isBind = sp.getBoolean("isBind", false);
//		if (dialog == null) {
//			dialog = new TipDialog(getActivity(), TipDialog.VIEW_DIALOG);
//		}
//		/* 当设备未开启的时候，点击体重未开启后提示： */
//		dialog.setTitleAndContent("欢迎来到云健康", "立即前往添加设备吧");
//		/**
//		 * 获取内部Dialog 实例； 并且监听他的消失方法；
//		 */
//		Dialog dialogInstance = dialog.getDialog();
//		dialogInstance.setOnDismissListener(new OnDismissListener() {
//			@Override
//			public void onDismiss(DialogInterface arg0) {
//				MainApplication.setFirstOpenAPp(false);
//			}
//		});
//		if (!isBind && MainApplication.isFirstOpenAPp()) {
////			dialog.show();
//			Intent intent = new Intent(getActivity(),WjkPopupActivity.class);
//			startActivityForResult(intent, REQUEST_DIALOG);
//		}
//
//		dialog.setCancleCallback(new CancleListener() {
//			@Override
//			public void cancle() {
//				dialog.dismiss();
//
//			}
//		});
//		/**
//		 * 点击确定后，不同的状态进入不同的
//		 */
//		dialog.setConfirmCallback(new ConfirmListener() {
//			@Override
//			public void confirm() {
//				intentAddDevice();
//				if (dialog != null) {
//					dialog.dismiss();
//				}
//			}
//		});
//		
//	}
//
//	/**
//	 * 展示最后一次连接过的设备为大图fragment
//	 */
//	private void showLastDeviceFragment(int temp) {
//
//		setTabSelection(temp, false); // 默认体重秤为第一页面
//	}
//
//	@Override
//	public void onPause() {
//		super.onPause();
//		if (dialog != null) {
//			dialog.dismiss();
//		}
//	}
//
//	/**
//	 * 设置监听
//	 */
//	private void setListener() {
//		ivAdd.setOnClickListener(this);
//		ll_not_connectted_prompot.setOnClickListener(this);
//	}
//
//	/**
//	 * 初始化View
//	 */
//	private void initView() {
//		ivAdd = (TextView) mactivity.findViewById(R.id.iv_wjk_right_add);
//
//		btnFirst = (ImageButton) rootView.findViewById(R.id.btn_yjk_first);
//		llFirst = (LinearLayout) rootView.findViewById(R.id.ll_yjk_first);
//		tv_last_connected_device_name = (TextView) rootView.findViewById(R.id.tv_last_connected_device_name);
//		tv_last_connected_device_unit = (TextView) rootView.findViewById(R.id.tv_last_connected_device_unit);
//		iv_last_connected_device_view = (ImageView) rootView.findViewById(R.id.iv_last_connected_device_view);
//		tv_last_connected_device_value = (TextView) rootView.findViewById(R.id.tv_last_connected_device_value);
//
//		btn_yjk_third = (ImageButton) rootView.findViewById(R.id.btn_yjk_third);
//		btn_yjk_second = (ImageButton) rootView.findViewById(R.id.btn_yjk_second);
//		ll_not_connectted_prompot = (LinearLayout) rootView.findViewById(R.id.ll_not_connectted_prompot);
//		ll_not_connectted_prompot.setOnClickListener(this);
//
//		btnFirst.setOnClickListener(WjkFragment.this);
//		btn_yjk_second.setOnClickListener(WjkFragment.this);
//		btn_yjk_third.setOnClickListener(WjkFragment.this);
//	}
//
//	@Override
//	public void onClick(View view) {
//		switch (view.getId()) {
//		case R.id.btn_yjk_second:// 底部第二个按钮
//			dialog.show();
//			dialog.setTitleAndContent("体温计", "该设备尚未开启，立即前往添加？");
//			dialog.setConfirmCallback(new ConfirmListener() {
//
//				@Override
//				public void confirm() {
//					Intent weightIntent = new Intent(getActivity(), SelectBrandActivity.class);
//					weightIntent.putExtra("deviceType", "体温计");
//					startActivityForResult(weightIntent, THERMOMETER_REQUEST_CODE);
//				}
//			});
//
//			break;
//		case R.id.btn_yjk_third:// 地步第三个按钮；
//			dialog.show();
//			dialog.setTitleAndContent("血糖仪", "该设备尚未开启，立即前往添加？");
//			dialog.setConfirmCallback(new ConfirmListener() {
//
//				@Override
//				public void confirm() {
//					Intent weightIntent = new Intent(getActivity(), SelectBrandActivity.class);
//					weightIntent.putExtra("deviceType", "血糖仪");
//					startActivityForResult(weightIntent, BLOOD_SUGAR_REQUEST_CODE);
//				}
//			});
//
//			break;
//		case R.id.ll_not_connectted_prompot:
//			if (curFragment == weitFragment) { // 点击黄色条目，当前的fragment为 体重秤；
//				weitFragment.scanLeDevice(true, "Xun");
//			} else if (curFragment == blFragment) {// 点击黄色条目，当前的fragment为 血压计；
//				blFragment.scanLeDevice(true, "KBB");
//			}
//			break;
//		case R.id.iv_wjk_right_add: // 添加设备
//			switch (view.getId()) {
//			case R.id.iv_wjk_right_add:
//				MobclickAgent.onEvent(mactivity, "A002");
//				MobclickAgent.updateOnlineConfig(mactivity);
//
//				intentAddDevice();
//				break;
//			}
//			break;
//		}
//
//	}
//
//	/**
//	 * 跳转到添加设备界面
//	 */
//	private void intentAddDevice() {
//		Intent intent = new Intent(mactivity, AddDevicesActivity.class);
//		startActivityForResult(intent, ResultCode.SUCCESS);
//	}
//
//	/**
//	 * 根据传入的index参数来设置选中的tab页。
//	 * 
//	 * @param index
//	 *            每个tab页对应的下标。0表示体重秤，1表示血压计
//	 */
//	public void setTabSelection(int index, boolean autoConnect) {
//		FragmentTransaction transaction = fragmentManager.beginTransaction();
//		mactivity.closeSlidingMenu();
//		switch (index) {
//		case FRAGMENT_WEIGHT_SCLAE:
//			if (weitFragment == null)
//				weitFragment = new WeightFragment();
//			curFragment = weitFragment;
//			weitFragment.setWJKfragment(WjkFragment.this);
//			if (autoConnect) {
//				weitFragment.setAutoConnect(true);
//			}
//			transaction.replace(R.id.innerframe, weitFragment);
//			break;
//		case FRAGMENT_BLOOD_PRESURE:
//			if (blFragment == null)
//				blFragment = new BloodPressureFragment();
//			curFragment = blFragment;
//			blFragment.setWJKfragment(WjkFragment.this);
//			if (autoConnect) {
//				blFragment.setAutoConnect(true);
//			}
//			transaction.replace(R.id.innerframe, blFragment);
//			break;
//		}
//		transaction.commitAllowingStateLoss();
//	}
//
//	@Override
//	public void onDetach() {
//		super.onDetach();
//		/* fragment context null */
//		try {
//			Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
//			childFragmentManager.setAccessible(true);
//			childFragmentManager.set(this, null);
//
//		} catch (NoSuchFieldException e) {
//			throw new RuntimeException(e);
//		} catch (IllegalAccessException e) {
//			throw new RuntimeException(e);
//		}
//	}
//
//	/**
//	 * 当点击未开启图片的时候执行的方法（大图）
//	 */
//	public void unOpenAction() {
//		dialog.show();
//		dialog.setTitleAndContent("体重秤", "该设备尚未开启，立即前往添加？");
//		dialog.setConfirmCallback(new ConfirmListener() {
//
//			@Override
//			public void confirm() {
//				Intent weightIntent = new Intent(getActivity(), SelectBrandActivity.class);
//				weightIntent.putExtra("deviceType", "体重秤");
//				startActivityForResult(weightIntent, WEIGHT_SCALE_REQUEST_CODE);
//			}
//		});
//
//	}
//
//	/**
//	 * 隐藏当前的黄线
//	 */
//	public void hideLine() {
//		if (ll_not_connectted_prompot.getVisibility() != View.GONE) {
//			ll_not_connectted_prompot.setVisibility(View.GONE);
//		}
//	}
//
//	/**
//	 * 展示当前的黄线
//	 */
//	public void showLine() {
//		if (ll_not_connectted_prompot.getVisibility() != View.VISIBLE) {
//			ll_not_connectted_prompot.setVisibility(View.VISIBLE);
//		}
//	}
//
//	/**
//	 * 控制体重血压的handler
//	 */
//
//	@SuppressLint("HandlerLeak")
//	Handler observerHandler = new Handler() {
//		public void handleMessage(android.os.Message msg) {
//			switch (msg.what) {
//			case ObserverConstants.CHANGE_WEIGHT_MAKER:
//				// 切换为体重
//				setTabSelection(0, true);
//				break;
//			case ObserverConstants.CHANGE_BLOOD_MAKER:
//				// 切换为血压
//				setTabSelection(1, true);
//				break;
//			default:
//				break;
//			}
//		};
//	};
//
//	/**
//	 * 注册观察者
//	 */
//	private void registerTabObserver() {
//		observer = new DevicesObserver(observerHandler);
//		getActivity().getContentResolver().registerContentObserver(ObserverConstants.CHANGE_WEIGHT, false, observer);
//		getActivity().getContentResolver().registerContentObserver(ObserverConstants.CHANGE_BLOOD, false, observer);
//	}
//
//	@Override
//	public void onDestroy() {
//		if (observer != null)
//			getActivity().getContentResolver().unregisterContentObserver(observer);
//		super.onDestroy();
//	}
//
//	/**
//	 * 获取最后一条数据
//	 * 
//	 * @return
//	 */
//	private List<BloodPressureData> getLastData() {
//		QueryBuilder<BloodPressureData> qb = bloodPressureDataDao.queryBuilder();
//		qb.orderDesc(Properties.Id);
//		return qb.list();
//	}
//
//	/**
//	 * 获取最后一条数据；
//	 */
//	private WeightData getLastWeightData() {
//		QueryBuilder<WeightData> qb = weightDataDao.queryBuilder();
//		qb.orderDesc(WeightDataDao.Properties.Id);
//		List<WeightData> list = qb.list();
//		if (list != null && list.size() > 0) {
//			return list.get(0);
//		} else {
//			return null;
//		}
//	}
//	
//	@Override
//	public void onActivityResult(int requestCode, int resultCode, Intent data) {
//		super.onActivityResult(requestCode, resultCode, data);
//		System.out.println("onActivityResult----wjkfragment");
//		if(data != null && resultCode == Activity.RESULT_OK)
//		switch (requestCode) {
//		case REQUEST_DIALOG:
//			int confirm = data.getIntExtra("confirm", -1);
//			if(confirm == 1){
//				intentAddDevice();
//			}
//			break;
//		default:
//			break;
//		}
//	}
}
